Skip to content

Follow the API's ducking flip to default-off (0.11.3 / cli 0.9.0) - #26

Merged
spencer-zqian merged 1 commit into
mainfrom
feat/ducking-default-off
Aug 5, 2026
Merged

Follow the API's ducking flip to default-off (0.11.3 / cli 0.9.0)#26
spencer-zqian merged 1 commit into
mainfrom
feat/ducking-default-off

Conversation

@spencer-zqian

Copy link
Copy Markdown
Contributor

The server now treats an unset ducking as off on /v1/video-to-music, /v1/video-to-sound, /v1/video-to-video-music and /v1/video-to-video-sound (dashboard PR #233, deployed).

Both packages already omitted ducking when unset and still do, so nothing changes on the wire. What changed is everything that explained the old default — and on the CLI, the only expressible direction was the one that is now the default.

sonilo 0.11.2 → 0.11.3 (docs only)

  • The request builders no longer justify omit-when-unset by naming which way each default points. That reasoning is exactly what went stale; the rule is that the server decides, and neither ducking nor keep_original_sound is pinned here.
  • build_v2s_parts' docstring gained the thing specific to /v1/video-to-sound: with no keep_original_sound field on that endpoint, ducking picks the voice source as well as the mix style, so leaving it unset keeps the source's own speech out of the deliverable entirely and produces no music_processed stem.
  • dubbing's docstring no longer describes its default as "the opposite of the music endpoints'" — every endpoint now defaults off.
  • README: the video_to_music ducking bullet and example, the video_to_video_music example, the sound-endpoint paragraph, and the dubbing paragraph.

sonilo-cli 0.8.2 → 0.9.0

The only behaviour change in this PR.

  • --ducking added to video-to-sound, video-to-video-sound and video-to-video-music. Without it the CLI cannot request ducking at all now.
  • --no-ducking is kept. Removing it would turn every existing script that passes it into a hard argparse failure. It now sends an explicit False, which is what the server would have applied anyway.
  • Passing both exits with a clear message rather than silently picking a winner.

Unrelated bug fixed while bumping versions

_version.py was still 0.11.0 against pyproject's 0.11.2, and sonilo_cli/__init__.py still 0.8.0 against 0.8.2. Those are the values sent as x-sonilo-client-version, so releases 0.11.1, 0.11.2, 0.8.1 and 0.8.2 all reported themselves as the older version in telemetry. All four strings now agree.

The existing identity test only compares the header against _version.py, so it compares the drifted value with itself and cannot catch this. Worth a CI check that ties _version.py to pyproject.toml — not added here to keep the diff on topic.

sonilo-cli's sonilo>=0.11.0,<0.12 pin still holds, since the core stays on 0.11.x. No widening needed this round.

Testing

237 core tests and 88 CLI tests pass, run per package as CI does. New CLI coverage pins --duckingducking=true, --no-duckingducking=false, unset → field absent, and the both-flags rejection.

Note: running both directories in a single pytest invocation fails at collection because each package has its own top-level tests package. That predates this change and reproduces on a pristine main.

Note for video_to_sound callers

This is the one endpoint where the flip is user-visible without any other flag: callers who relied on the default no longer get the source speech in the result, with no error raised.

The server now treats an unset `ducking` as off on /v1/video-to-music,
/v1/video-to-sound, /v1/video-to-video-music and /v1/video-to-video-sound.
Both packages already omitted the field when unset, so nothing changes on
the wire -- but every comment and doc that explained the old default was
now wrong, and the CLI could only express the direction that had become
the default.

sonilo (0.11.2 -> 0.11.3, docs only):
  * The request builders no longer justify omit-when-unset by naming which
    way each default points -- that reasoning is what went stale. The rule
    is that the server decides, and neither `ducking` nor
    `keep_original_sound` is pinned here.
  * build_v2s_parts' docstring now states what is specific to
    /v1/video-to-sound: with no keep_original_sound field there, `ducking`
    picks the voice source as well as the mix, so leaving it unset keeps
    the source's own speech out of the deliverable entirely.
  * dubbing's docstring no longer calls its default "the opposite of the
    music endpoints'" -- every endpoint now defaults off.
  * README: the video_to_music ducking bullet and example, the
    video_to_video_music example, the sound-endpoint paragraph, and the
    dubbing paragraph.

sonilo-cli (0.8.2 -> 0.9.0):
  * --ducking added to video-to-sound, video-to-video-sound and
    video-to-video-music. Without it the CLI cannot request ducking at all
    now.
  * --no-ducking is kept: dropping it would turn every script that passes
    it into a hard argparse failure, and it now sends the explicit False
    the server would have applied anyway. Passing both exits rather than
    silently picking a winner.

Version drift fixed while bumping, pre-existing and unrelated to ducking:
`_version.py` was still 0.11.0 against pyproject's 0.11.2, and
`sonilo_cli/__init__.py` still 0.8.0 against 0.8.2. Those are the values
sent as `x-sonilo-client-version`, so 0.11.1, 0.11.2, 0.8.1 and 0.8.2 all
reported themselves as the older release. All four strings now agree. The
existing test only compares the header against `_version.py`, so it could
not catch the drift.

sonilo-cli's `sonilo>=0.11.0,<0.12` pin still holds -- the core stays on
0.11.x, so no widening is needed this round.

237 core tests and 88 CLI tests pass, run per package as CI does. (Running
both directories in one pytest invocation fails at collection because the
two packages both have a top-level `tests` package; that predates this
change and reproduces on a pristine main.)
@sapient-app

sapient-app Bot commented Aug 5, 2026

Copy link
Copy Markdown

Sapient docs evals

Waiting for the staging docs URL before running evals.

Sapient will start the selected PR evals automatically when GitHub reports a successful docs deployment for this PR. This usually happens within 15 minutes.

Commit: 8733b22
Status: waiting for staging docs URL

@spencer-zqian
spencer-zqian merged commit e450816 into main Aug 5, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant